Jak haszować tekst algorytmem MD5 [Delphi 8]

Adam Boduch

Platforma .NET udostępnia klasę, która w znacznym stopniu ułatwia haszowanie tekstu, algorytmem MD5. Klasa MD5CryptoServiceProvider, bo o niej mowa, znajduje się w przestrzeni System.Security.Cryptography.

W trakcie korzystania z klasy, nie możemy podać łańcucha tekstu do zaszyfrowania, lecz dane w postaci tabicy bajtów (typ Byte). Z tego względu będziemy musieli skorzystać dodatkowo z klas ASCIIEncoding oraz StringBuilder. Na listingu poniżej znajduje się kompletny kod programu konsolowego:

program MD5Demo;

{$APPTYPE CONSOLE}

uses
  system.Text,
  System.Security.Cryptography;

function Md5Crypt(CryptString : String) : String;
var
  MD5 : MD5CryptoServiceProvider;
  ASCII : ASCIIEncoding;
  ByteArray : array of Byte;

  function ConvertToString(Value : array of byte) : String;
  var
    i : Integer;
    Output : StringBuilder;
  begin
    Output := StringBuilder.Create(System.Array(Value).Length);
    for I := 0 to System.Array(Value).Length -1 do
    begin
      output.Append(Value[i].ToString('X2'))
    end;

    Result := Output.ToString;
  end;

begin
  ASCII := ASCIIEncoding.Create;
  { tworzenie klasy }
  MD5 := MD5CryptoServiceProvider.Create;
  { zaszyfrowanie tekstu }
  ByteArray := MD5.ComputeHash(ASCII.GetBytes(CryptString));

  { konwertowanie tekstu na czytelny łańcuch }
  Result := ConvertToString(ByteArray).ToLower;
end;

begin
  Console.Write('Podaj tekst do zaszyfrowania: ');
  Console.WriteLine(
    MD5Crypt(Console.ReadLine)
  );
  Console.ReadLine;
end.

6 komentarzy

w 2005 i 2006 podejrzewam, że też już jest :p (wiem, że te kommenty były już dawno, kiedy nie było jeszcze D2005) :)

to może się przerzucisz na .NET?

Dobre i to, może i nie jest ale zmienia postać tekstu :)

MD5 nie jest algorytmem szyfrowania! :P

Fajne ale szkoda że w 8

Poprawka: haszujacy...